/*
 * File:   Map.h
 * Author: Elevator
 *
 * Created on July 15, 2013, 10:38 PM
 */

#ifndef DATA_MAP_H
#define DATA_MAP_H

#include <string>
#include "Common/Common.h"

#include "Obstacle.h"

namespace data {

	class Map {
	public:
		Map(
			std::string name,
			std::string description) :
		_name( name ),
		_description( description )
		{
			_obstacles = new Vector<const Obstacle*>();
		}

		~Map()
		{
			delete _obstacles;
		}

		inline const std::string GetName( ) const { return _name; }
		inline void SetName( std::string name ) { _name = name; }

		inline const std::string GetDescription( ) const { return _description; }
		inline void SetDescription( std::string description ) { _description = description; }

		inline void AddObstacle( const Obstacle* obstacle ) { _obstacles->Add(obstacle); }
		inline void RemoveObstacle( const Obstacle* obstacle ) { _obstacles->Remove(obstacle); }
		inline const IIterable<const Obstacle*>* GetObstacles( ) const { return _obstacles; }

	private:
		std::string _name;
		std::string _description;
		Vector<const Obstacle*>* _obstacles;
	};
}
#endif	/* MAP_H */

